import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // baseURL: "http://127.0.0.1:3333",
  timeout: 5000 // request timeout
})

service.interceptors.request.use(
  config => {
    if (store.getters.token) {
      config.headers['X-Token'] = getToken()
    }
    return config
  },
  error => {
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

// 响应拦截器
// service.interceptors.response.use(
//   response => {
//     const message = response.data.data.message
//     const code = response.data.code
//     if (code !== 200) { // 改成后端响应成功的状态码
//       switch (code) { // 响应错误判断
//         case 401:
//           if (router.currentRoute.name === 'login') {
//             return Promise.reject(new Error(message))
//           } else {
//             Message({
//               message: '您没有权限访问该资源',
//               type: 'error'
//             })
//           }
//           break
//         case 403:
//           Message({
//             message: message,
//             type: 'error'
//           })
//           break
//         case 500:
//           Message({
//             message: '服务异常，请联系管理员',
//             type: 'error'
//           })
//           break
//         default:
//           Message({
//             message: message,
//             type: 'error'
//           })
//       }
//       // store.dispatch('user/resetToken').then(() => {
//       //   location.reload()  // 重复登录的情况
//       // })
//       return Promise.reject(new Error(message || 'Error'))
//     } else {
//       return response
//     }
//   },
//   error => {
//     console.log('err' + error) // 响应错误
//     Message({
//       message: error.message,
//       type: 'error',
//       duration: 5 * 1000
//     })
//     return Promise.reject(error)
//   }
// )
// service.interceptors.response.use(
//   response => {
//     const res = response.data

//     if (res.code !== 20000) {
//       Message({
//         message: res.message || 'Error',
//         type: 'error',
//         duration: 5 * 1000
//       })

//       if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
//         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
//           confirmButtonText: 'Re-Login',
//           cancelButtonText: 'Cancel',
//           type: 'warning'
//         }).then(() => {
//           store.dispatch('user/resetToken').then(() => {
//             location.reload()
//           })
//         })
//       }
//       return Promise.reject(new Error(res.message || 'Error'))
//     } else {
//       return res
//     }
//   },
//   error => {
//     console.log('err' + error) // for debug
//     Message({
//       message: error.message,
//       type: 'error',
//       duration: 5 * 1000
//     })
//     return Promise.reject(error)
//   }
// )

export default service


